#include<iostream>
using namespace std;
#include<set>
/*
学习目标：
    set容器默认排序规则为从小到大，掌握如何改变排序规则
主要技术点：
    利用仿函数，可以改变排序规则
*/
class Person
{
public:
    Person(string name,int age)
    {
        this->m_Name=name;
        this->m_Age=age;
    }
    string m_Name;
    int m_Age;
};
class comparePerson
{
public:
    bool operator()(const Person &p1,const Person &p2)
    {
        //按照年龄降序
        return p1.m_Age>p2.m_Age;
    }
};
void test01()
{
    //自定义数据类型，都会指定排序规则
    set<Person,comparePerson> s;
    //创建person对象
    Person p1("刘备",20);
    Person p2("张飞",10);
    Person p3("曹操",30);
    Person p4("关羽",40);
    s.insert(p1);
    s.insert(p2);
    s.insert(p3);
    s.insert(p4);
    for(set<Person,comparePerson>::iterator it=s.begin();it!=s.end();it++)
    {
        cout<<"姓名："<<it->m_Name<<" 年龄："<<it->m_Age<<endl;
    }
    cout<<endl;
}
int main()
{
    test01();
}